{
	//es5|es3 默认参数的写法
	function f(x,y,z){
		//y=y||7
 		if(!y){
 		   y = 2				
 		}
 		//y=y||42
 		if(!z){
 			z= 3
 		}
 		return x+y+z		
	}
	//console.log(f(1))
}

{
 	//es6默认参数
 	function f(x,y=2,z=3){
 		return x+y+z
 	}
 	//console.log(f(2,5))
}
// {
// 	function checkParameter(){
// 		throw new Error('can\ be empty')
// 	}
// 	function f(x=checkParameter(),y=2,z=3){
//  		return x+y+z
//  	}
//  	try
//   {
//  		f()
//   }
// 	catch(err)
//   {
//     console.log(err)
//   }
// }

{
	//es3|| es5 可变参数
	// function f(){
	//   console.log(typeof arguments)
	//   var a = Array.prototype.slice.call(arguments)		
	// }
	function add() {
    var len = arguments.length,
        sum = 0;
    for(var i=0;i<len;i++){
        sum += arguments[i];
    }
    return sum;
}
	console.log(add(1,23,1,2))
	function f(){
		var arr = Array.prototype.slice.call(arguments)
		var sum = 0
		arr.forEach(function(item){
			console.log(1111111111)
			sum+=item	
		})	
		console.log(f(1,23,1,2))
	}
}

{
	//es6可变参数
	function f(...a){
		var sum = 0;
		a.forEach(function(item){
				sum+=item*1
		})
		return sum
	}
	console.log(f(10,20,30,40))

}